import type {
  ICaptcha,
  IUpdateInfo,
  IUpdatePassword,
  IUserInfoVo,
  IUserLogin,
  CodeType
} from "./types/login";
import { http } from "@/http/http";

/**
 * 登录表单
 */
export interface ILoginForm {
  username: string;
  password: string;
  code: string;
  uuid: string;
  mobile: string;
}
interface CodeForm {
  mobile: string;
  type: CodeType;
}

/**
 * 获取验证码
 * @returns ICaptcha 验证码
 */
export function getCode(codeForm:CodeForm) {
  return http.get<ICaptcha>("/code", codeForm);
}

/**
 * 用户登录
 * @param loginForm 登录表单
 */
export function login(loginForm: ILoginForm) {
  return http.post<IUserLogin>("/login/password", loginForm);
}
export function codeLogin(loginForm:ILoginForm){
  return http.post<IUserLogin>("/login", loginForm);

}
/**
 * 获取用户信息
 */
export function getUserInfo() {
  return http.get<IUserInfoVo>("/user/info");
}

/**
 * 退出登录
 */
export function logout() {
  return http.get<void>("/user/logout");
}

/**
 * 修改用户信息
 */
export function updateInfo(data: IUpdateInfo) {
  return http.post("/user/updateInfo", data);
}

/**
 * 修改用户密码
 */
export function updateUserPassword(data: IUpdatePassword) {
  return http.post("/user/updatePassword", data);
}

/**
 * 获取微信登录凭证
 * @returns Promise 包含微信登录凭证(code)
 */
export function getWxCode() {
  return new Promise<UniApp.LoginRes>((resolve, reject) => {
    uni.login({
      provider: "weixin",
      success: (res) => resolve(res),
      fail: (err) => reject(new Error(err)),
    });
  });
}

/**
 * 微信登录参数
 */

/**
 * 微信登录
 * @param params 微信登录参数，包含code
 * @returns Promise 包含登录结果
 */
export function wxLogin(data: { code: string }) {
  return http.post<IUserLogin>("/user/wxLogin", data);
}
